iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
AI & Data

機器學習不難嘛系列 第 17

Day17-資料預處理(三)

  • 分享至 

  • xImage
  •  

在寫完前兩篇文章後我發現我竟然漏講了另外一種資料預處理的方法,所以只好在加寫一篇來講最後一個預處理方法了。

最後一個預處理的方法叫做One-Hot Encodeing,它的功能是用來不存在先後順序的資料進行轉換,就和第一個預處理map()好像負責相反的工作,但雖然他們意思相反,其實轉換的功能是差不多的。

舉個例子,當有一群人進入公司求職,他們幾個全部都來自不同的大學,分別是大學1、大學2、大學3,但這些城市又沒有先後順序之分的時候,該怎麼辦呢? 這時我們就該用One-Hot Encodeing了,它的處理方式是將原本只有城市這一個因素分化成大學1、大學2、大學3三個因素,原本的表格長這樣

import pandas as pd

people = ['A', 'B', 'C', 'D', 'E', 
          'F', 'G', 'H', 'I', 'J']
universities = ['大學1', '大學2', '大學3', '大學1', '大學2', 
                '大學3', '大學1', '大學2', '大學3', '大學1']

s = pd.DataFrame({
  'people': people,
  'universities': universities,
})
s

https://ithelp.ithome.com.tw/upload/images/20230925/20162311BFlujEZFXt.png

我們利用One-Hot Encodeing轉碼後

from sklearn.preprocessing import OneHotEncoder

onehot_encoder = OneHotEncoder()
onehot_encoder.fit(s[["universities"]])
city_encoded = onehot_encoder.transform(s[["universities"]]).toarray()
city_encoded

https://ithelp.ithome.com.tw/upload/images/20230925/20162311vrD0fugRU4.png

程式解釋:

第1行:導入sklearn.preprocessing中的OneHotEncoder

第2行:建立一個onehot_encoder物件,用來進行轉碼

第3行:利用fit方法將s表格中原本一欄總共有三種的叫universities的資料轉換成三欄只有一種的資料

第4行:用陣列型態儲存起來


上一篇
Day16-資料預處理(二)
下一篇
Day18-認識MLP
系列文
機器學習不難嘛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言